#include<stdio.h>
#include<iostream>
using namespace std;
int tree[30010];  
int club[1010];  
int cou[30010];  
int findroot(int x){  
    if(tree[x]==-1)return x;  
    return tree[x]=findroot(tree[x]);  
}  
void init(int n){  
    int i;  
    for(i=1;i<=n;i++){  
        tree[i]=-1;  
    }  
}  
int main(){  
    int n,m,i,j,k,stu;  
    scanf("%d %d",&n,&m);  
    init(n);  
    for(i=0;i<m;i++){  
        scanf("%d",&k);  
        for(j=0;j<k;j++){  
            scanf("%d",&stu);  
            if(club[i]==0){  
                club[i]=stu;  
            }  
            else{  
                int a=findroot(stu);  
                int b=findroot(club[i]);  
                if(a!=b){  
                    tree[a]=b;  
                }  
            }  
        }  
    }  
    for(i=1;i<=n;i++){  
        int a=findroot(i);  
        cou[a]++;  
    }  
    int max=-1;  
    for(i=1;i<=n;i++){  
        if(cou[i]>max){  
            max=cou[i];  
        }  
    }  
    cout<<max;  
}   
